<?php

/**
 * Description of TerapeutaServicios
 *
 * @author  Mariano Renkine
 * @author  Fernando Arau
 */
class HorarioServicios extends Servicios
{

  function buscar($terapeutaId, $fecha)
  {
    $repoHorario = new RepoHorario();
//    $repoTerapeuta = new RepoTerapeuta();
    $horario = $repoHorario->buscar($terapeutaId, $fecha);
    if ($horario == null)
    {
//      $terapeuta = $repoTerapeuta->buscar($terapeutaId);
      $terapeuta = new Terapeuta();
      $terapeuta->setId($terapeutaId);
      $horario = new Horario();
      $horario->setFecha($fecha);
      $horario->setTerapeuta($terapeuta);
    }
    return $this->aDTO($horario);
  }

  function listarMes($terapeuta, $fecha)
  {
    $fechaInicio = strtotime($fecha);
    $cantDias = cal_days_in_month(CAL_GREGORIAN, date("n", $fechaInicio), date("Y", $fechaInicio));
    $fechaFin = $cantDias . date("-n-Y", $fechaInicio);
    $fechaFin = strtotime($fechaFin) + 1;
    for ($i = $fechaInicio; $i <= $fechaFin; $i+=86400)
    {
      $dto[] = $this->buscar($terapeuta, date("d-n-Y", $i));
    }
    return $dto;
  }

  function buscarHorasKeyValue()
  {
    $result = null;
    for ($i = HORA_COMIENZO; $i <= HORA_FIN + 1; $i++)
    {
      $result[$i]["key"] = $i;
      $result[$i]["value"] = $i;
    }
    return $result;
  }

  function guardarHorarios(HorarioDTO $horarioDTO)
  {
    $repoHorario = new RepoHorario();
    $horario = $this->deDTO($horarioDTO);
    $horario->setUsuario($this->ObtenerNombreUsuarioSesion());
    return $repoHorario->modificar($horario);
  }

  function guardarHorario1($terapeuta, $fecha, $desde, $hasta)
  {
    /**
     * @todo lógica persistencia     
     */
  }

  function guardarHorario2($terapeuta, $fecha, $desde, $hasta)
  {
    /**
     * @todo lógica persistencia     
     */
  }

  function aDTO(Horario $horario)
  {
    $horarioDTO = new HorarioDTO();

    $horarioDTO->setDesde1($horario->getDesde1());
    $horarioDTO->setDesde2($horario->getDesde2());
    $horarioDTO->setHasta1($horario->getHasta1());
    $horarioDTO->setHasta2($horario->getHasta2());
    $horarioDTO->setFecha($horario->getFecha());
    $horarioDTO->setUsuario($horario->getUsuario());
    $terapeutaServicios = new TerapeutaServicios();
    if ($horario->getTerapeuta())
    {
      $horarioDTO->setTerapeuta($terapeutaServicios->aDTO($horario->getTerapeuta()));
    }
    $horarioDTO->setId($horario->getId());
    return $horarioDTO;
  }

  function deDTO(HorarioDTO $horarioDTO)
  {
    $horario = new Horario();
    $horario->setDesde1($horarioDTO->getDesde1());
    $horario->setDesde2($horarioDTO->getDesde2());
    $horario->setHasta1($horarioDTO->getHasta1());
    $horario->setHasta2($horarioDTO->getHasta2());
    $horario->setFecha($horarioDTO->getFecha());
    $horario->setUsuario($horarioDTO->getUsuario());
    $terapeutaServicios = new TerapeutaServicios();
    $horario->setTerapeuta($terapeutaServicios->deDTO($horarioDTO->getTerapeuta()));
    $horario->setId($horarioDTO->getId());
    return $horario;
  }

}

?>
